﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using BUS;
using DTO;

namespace QuanLyHocSinh.GUI
{
    public partial class F_QuanLyThongTinHocSinh : DevExpress.XtraEditors.XtraUserControl
    {
        int trangthaiform = 1;
        List<TextEdit> ListTextBox = new List<TextEdit>();
        List<TextEdit> ListTextBoxSearch = new List<TextEdit>();
        List<LookUpEdit> ListLookUp = new List<LookUpEdit>();
        List<DateEdit> ListDate = new List<DateEdit>();
        public F_QuanLyThongTinHocSinh()
        {
            InitializeComponent();
            this.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
        }

        private void F_QuanLyThongTinHocSinh_Load(object sender, EventArgs e)
        {
            LoadCacLookUpEdit();
            DuaControlVaoList();
            this.cbGioiTinh.Properties.TextEditStyle = this.cbGioiTinhS.Properties.TextEditStyle  = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
            this.dgvHocSinh.DataSource = BUSHocSinh.DanhSachHocSinh();
        }

        private void DuaControlVaoList()
        {
            ListTextBox.Add(txtHoTenHS);
            ListTextBox.Add(txtDiaChi);
            ListTextBox.Add(txtDienThoai);
            ListTextBox.Add(txtEmail);

            ListTextBoxSearch.Add(txtMaHS);
            ListTextBoxSearch.Add(txtHoTenHSS);
            ListTextBoxSearch.Add(txtTenHS);
            ListTextBoxSearch.Add(txtHoHS);

        }

        private void LoadCacLookUpEdit()
        {
            DataTable dulieulookup = new DataTable();
            dulieulookup = BUSHocSinh.LietKeLop();
            this.lkTenLop.Properties.DataSource = dulieulookup;
            this.lkTenLop.Properties.DisplayMember = "TENLOP";
            this.lkTenLop.Properties.ValueMember = "MALOP";
            this.lkTenLop.Properties.ShowHeader = false;
            this.lkTenLop.Properties.ShowFooter = false;
            this.lkTenLop.Properties.ImmediatePopup = false;
            this.lkTenLop.Properties.SearchMode = SearchMode.AutoComplete;

            dulieulookup = null;
            dulieulookup = BUSHocSinh.LietKeKhoiLop();
            this.lkKhoiLop.Properties.DataSource = dulieulookup;
            this.lkKhoiLop.Properties.DisplayMember = "TENKHOILOP";
            this.lkKhoiLop.Properties.ValueMember = "MAKHOILOP";
            this.lkKhoiLop.Properties.ShowHeader = false;
            this.lkKhoiLop.Properties.ShowFooter = false;
            this.lkKhoiLop.Properties.ImmediatePopup = false;
            this.lkKhoiLop.Properties.SearchMode = SearchMode.AutoComplete;
        }

        private void cmdThem_Click(object sender, EventArgs e)
        {
            try
            {
                if (GlobalFunction.KiemTraItNhatMotTextEditCoNoiDung(ListTextBox) == false || this.cbGioiTinh.SelectedItem == null || this.dtNgaySinh.EditValue == null)
                {
                    XtraMessageBox.Show("Vui điền đầy đủ thông tin!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                DTOHocSinh hocsinh = new DTOHocSinh();
                hocsinh.HoTen = txtHoTenHS.Text;
                hocsinh.NgaySinh = DateTime.Parse(dtNgaySinh.EditValue.ToString());
                hocsinh.DiaChi = txtDiaChi.Text;
                hocsinh.DienThoai = txtDienThoai.Text;

                if (cbGioiTinh.SelectedIndex == 1)
                    hocsinh.GioiTinh = true;
                else if(cbGioiTinh.SelectedIndex == 0)
                    hocsinh.GioiTinh = false;

                hocsinh.Email = txtEmail.Text;
                int ketqua = BUSHocSinh.ThemHocSinh(hocsinh);
                if (ketqua > 0)
                {
                    this.cbGioiTinh.SelectedItem = null;
                    this.dtNgaySinh.EditValue = null;
                    GlobalFunction.XoaNoiDungTextEdit(ListTextBox);
                    XtraMessageBox.Show("Thêm thành công học sinh " + hocsinh.HoTen + " vào hệ thống!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.dgvHocSinh.DataSource = BUSHocSinh.DanhSachHocSinh();
                }
                else if (ketqua == -2)
                {
                    XtraMessageBox.Show(string.Format("Ngày tháng năm sinh không hợp lệ. Tuổi >= {0} && <= {1} !",BUS.GlobalVariableBUS.TuoiMin,BUS.GlobalVariableBUS.TuoiMax), "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);           
                }
                else if (ketqua == -3)
                {
                    XtraMessageBox.Show("Số Điện Thoại không hợp lệ!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else if (ketqua == -4)
                {
                    XtraMessageBox.Show("Địa chỉ email không hợp lệ!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void txtDienThoai_KeyPress(object sender, KeyPressEventArgs e)
        {
            GlobalFunction.KhongChoPhepNhapKiTu(e);
            GlobalFunction.KiemTraChieuDaiChuoi(this.txtDienThoai.Text, 10, e);
        }

        private void gvHocSinh_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
        {
            try
            {
                if (this.cmdXoa.Text != "Hoàn Tất Xóa")
                {
                    trangthaiform = 0;
                    this.lbMaHS.Text = gvHocSinh.GetRowCellValue(e.RowHandle, gvHocSinh.Columns[0]).ToString().Trim();
                    this.txtHoTenHS.Text = gvHocSinh.GetRowCellValue(e.RowHandle, gvHocSinh.Columns[1]).ToString().Trim();
                    this.dtNgaySinh.EditValue = ((DateTime)gvHocSinh.GetRowCellValue(e.RowHandle, gvHocSinh.Columns[2]));
                    this.txtDiaChi.Text = gvHocSinh.GetRowCellValue(e.RowHandle, gvHocSinh.Columns[3]).ToString().Trim();
                    this.txtDienThoai.Text = gvHocSinh.GetRowCellValue(e.RowHandle, gvHocSinh.Columns[4]).ToString().Trim();
                    this.txtEmail.Text = gvHocSinh.GetRowCellValue(e.RowHandle, gvHocSinh.Columns[5]).ToString().Trim();

                    bool gioitinh = bool.Parse(gvHocSinh.GetRowCellValue(e.RowHandle, gvHocSinh.Columns[6]).ToString());
                    if (gioitinh == true)
                        this.cbGioiTinh.SelectedItem = "Nam";
                    else
                        this.cbGioiTinh.SelectedItem = "Nữ";

                    this.cmdSua.Text = "Hoàn Tất Sửa";
                    this.cmdThem.Enabled = this.cmdXoa.Enabled = false;
                    this.cmdBoQua.Enabled = true;

                }
            }
            catch (Exception ex)
            {

            }
        }

        private void cmdBoQua_Click(object sender, EventArgs e)
        {
            this.trangthaiform = 1;
            this.cbGioiTinh.SelectedItem = null;
            this.dtNgaySinh.EditValue = null;
            GlobalFunction.XoaNoiDungTextEdit(ListTextBox);
            this.cmdThem.Enabled = this.cmdSua.Enabled = this.cmdXoa.Enabled = true;
            this.cmdBoQua.Enabled = false;
            this.cmdSua.Text = "Sửa";
            this.cmdXoa.Text = "Xóa";
            this.dgvHocSinh.DataSource = BUSHocSinh.DanhSachHocSinh();
        }

        private void cmdSua_Click(object sender, EventArgs e)
        {
            if (this.cmdSua.Text == "Hoàn Tất Sửa")
            {
                try
                {
                    DialogResult dialogResult = XtraMessageBox.Show(string.Format("Bạn có muốn thay đổi thông tin của học sinh {0}", this.txtHoTenHS.Text), "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dialogResult == DialogResult.Yes)
                    {
                        DTOHocSinh hocsinh = new DTOHocSinh();
                        hocsinh.MaHS = this.lbMaHS.Text;
                        hocsinh.HoTen = this.txtHoTenHS.Text;
                        hocsinh.NgaySinh = (DateTime)this.dtNgaySinh.EditValue;
                        hocsinh.DiaChi = this.txtDiaChi.Text;
                        hocsinh.DienThoai = this.txtDienThoai.Text;
                        hocsinh.Email = this.txtEmail.Text;

                        if (cbGioiTinh.SelectedIndex == 1)
                            hocsinh.GioiTinh = true;
                        else if (cbGioiTinh.SelectedIndex == 0)
                            hocsinh.GioiTinh = false;
                        int ketqua = BUSHocSinh.CapNhatThongTinHocSinh(hocsinh);
                        if (ketqua > 0)
                        {
                            this.cbGioiTinh.SelectedItem = null;
                            this.dtNgaySinh.EditValue = null;
                            GlobalFunction.XoaNoiDungTextEdit(ListTextBox);
                            XtraMessageBox.Show("Cập nhật thành công thông tin học học sinh " + hocsinh.MaHS + " vào hệ thống!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            this.dgvHocSinh.DataSource = BUSHocSinh.DanhSachHocSinh();
                            this.cmdSua.Text = "Sửa";
                            this.cmdBoQua.Enabled = false;
                            this.cmdThem.Enabled = this.cmdXoa.Enabled = true;
                        }
                        else if (ketqua == -2)
                        {
                            XtraMessageBox.Show("Ngày tháng năm sinh không hợp lệ. Tuổi >= 14 && <=20 !", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        else if (ketqua == -3)
                        {
                            XtraMessageBox.Show("Số Điện Thoại không hợp lệ!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        else if (ketqua == -4)
                        {
                            XtraMessageBox.Show("Địa chỉ email không hợp lệ!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
                catch (Exception ex)
                {
                    XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                XtraMessageBox.Show("Vui lòng chọn 1 học sinh trước khi sửa thông tin!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void cmdXoa_Click(object sender, EventArgs e)
        {
            if (this.cmdXoa.Text == "Hoàn Tất Xóa")
            {
                DataTable Dtbhs = (DataTable)dgvHocSinh.DataSource;
                DataRow[] Drshs = Dtbhs.Select("IsCheck = 'True'");
                if (Drshs.Length > 0)
                {
                    DialogResult dialogResult = XtraMessageBox.Show("Bạn có chắc chắn muốn xóa!?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dialogResult == DialogResult.Yes)
                    {
                        try
                        {
                            string MaHS = "";
                            DTOHocSinh hocsinh = new DTOHocSinh();
                            int ketqua = 0;
                            foreach (DataRow row in Drshs)
                            {
                                hocsinh.MaHS = row[0].ToString();
                                ketqua = BUSHocSinh.XoaHocSinh(hocsinh);
                                MaHS += hocsinh.MaHS + ", ";
                            }
                            this.cmdXoa.Text = "Xóa";
                            this.cmdBoQua.Enabled = false;
                            this.cmdThem.Enabled = this.cmdXoa.Enabled = true;
                            this.gvHocSinh.Columns[8].OptionsColumn.AllowEdit = false;
                            XtraMessageBox.Show(string.Format("Xóa Thành Công (Các) Học Sinh Có Mã: {0}", MaHS.Substring(0, MaHS.Length - 2)), "Kết Quả", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            trangthaiform = 1;
                            this.dgvHocSinh.DataSource = BUSHocSinh.DanhSachHocSinh();
                        }
                        catch (Exception ex)
                        {
                            XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
                else
                {
                    XtraMessageBox.Show("Vui lòng chọn học sinh trước khi xóa thông tin!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                this.gvHocSinh.Columns[8].OptionsColumn.AllowEdit = true;
                trangthaiform = 0;
                this.cmdXoa.Text = "Hoàn Tất Xóa";
                this.cmdThem.Enabled = this.cmdSua.Enabled = false;
                this.cmdBoQua.Enabled = true;
            }
        }

        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            if (trangthaiform == 1)
            {
                if (GlobalFunction.KiemTraItNhatMotTextEditCoNoiDung(ListTextBoxSearch) == true || this.lkKhoiLop.EditValue != null || this.lkTenLop.EditValue != null || this.cbGioiTinhS.SelectedItem != null)
                {
                    try
                    {
                        if (radioGroup1.SelectedIndex == 0)
                        {
                            
                            DTOHocSinh hocsinh = new DTOHocSinh();
                            string makhoilop = "", malop = "",gioitinh = "1";
                            hocsinh.MaHS = this.txtMaHS.Text;
                            hocsinh.HoTen = this.txtHoTenHSS.Text;

                            if (this.cbGioiTinhS.SelectedItem != null)
                            {
                                if (cbGioiTinhS.SelectedIndex == 1)
                                    hocsinh.GioiTinh = true;
                                else if (cbGioiTinhS.SelectedIndex == 0)
                                    hocsinh.GioiTinh = false;
                            }
                            else
                            {
                                gioitinh = "0";
                            }

                            if (this.lkKhoiLop.EditValue != null)
                                makhoilop = lkKhoiLop.EditValue.ToString();

                            if (this.lkTenLop.EditValue != null)
                                malop = lkTenLop.EditValue.ToString();

                            DataTable ketqua = BUSHocSinh.TraCuuHocSinh(makhoilop, malop, hocsinh,gioitinh);
                            if(ketqua.Rows.Count > 0)
                                dgvHocSinh.DataSource = ketqua;
                            else
                            {
                                XtraMessageBox.Show("Không có học sinh phù hợp kết quả tìm kiếm!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                dgvHocSinh.DataSource = null;
                            }
                        }
                        else if (radioGroup1.SelectedIndex == 1)
                        {
                            string makhoilop = "", malop = "", ho = "", ten = "", gioitinh = "1";
                            DTOHocSinh hocsinh = new DTOHocSinh();
                            hocsinh.MaHS = this.txtMaHS.Text;
                            hocsinh.HoTen = this.txtHoTenHSS.Text;

                            if (this.cbGioiTinhS.SelectedItem != null)
                            {
                                if (cbGioiTinhS.SelectedIndex == 1)
                                    hocsinh.GioiTinh = true;
                                else if (cbGioiTinhS.SelectedIndex == 0)
                                    hocsinh.GioiTinh = false;
                            }
                            else
                            {
                                gioitinh = "0";
                            }
                            if (this.lkKhoiLop.EditValue != null)
                                makhoilop = lkKhoiLop.EditValue.ToString();

                            if (this.lkTenLop.EditValue != null)
                                malop = lkTenLop.EditValue.ToString();
                            ho = this.txtHoHS.Text;
                            ten = this.txtTenHS.Text;

                            DataTable ketqua = BUSHocSinh.TraCuuHocSinh(makhoilop, malop, ho, ten, hocsinh, gioitinh);
                            if (ketqua.Rows.Count > 0)
                                dgvHocSinh.DataSource = ketqua;
                            else
                            {
                                XtraMessageBox.Show("Không có học sinh phù hợp kết quả tìm kiếm!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                dgvHocSinh.DataSource = null;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else
            {
                XtraMessageBox.Show("Vui Lòng Hoàn Tất Chức Năng Đang Thực Hiện", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnXoaThongTin_Click(object sender, EventArgs e)
        {
            if (trangthaiform == 1)
            {
                GlobalFunction.XoaNoiDungTextEdit(ListTextBoxSearch);
                this.lkKhoiLop.EditValue = this.lkTenLop.EditValue = null;
                LoadCacLookUpEdit();
                this.cbGioiTinhS.SelectedItem = null;
                this.dgvHocSinh.DataSource = BUSHocSinh.DanhSachHocSinh();
            }
            else
            {
                XtraMessageBox.Show("Vui Lòng Hoàn Tất Chức Năng Đang Thực Hiện", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void lkKhoiLop_EditValueChanged(object sender, EventArgs e)
        {
            DataTable dulieulookup = new DataTable();
            dulieulookup = BUSHocSinh.LietKeLop(lkKhoiLop.EditValue);
            this.lkTenLop.Properties.DataSource = dulieulookup;
            this.lkTenLop.Properties.DisplayMember = "TENLOP";
            this.lkTenLop.Properties.ValueMember = "MALOP";
            this.lkTenLop.Properties.ShowHeader = false;
            this.lkTenLop.Properties.ShowFooter = false;
            this.lkTenLop.Properties.ImmediatePopup = false;
            this.lkTenLop.Properties.SearchMode = SearchMode.AutoComplete;
        }
    }
}
